# 🥘🍴 Recipes API ⚡

Простой API приложения для создания и хранения рецептов блюд.

----

## Раскладка директорий

- 📁 **src**
  - 📁 **app**: Код приложения
    - 📁 **api**: API endpoint handlers
    - 📄 *data.py*: Слой работы с данными.
    - 📄 *db.py*: Конфигурация базы данных.
    - 📄 *main.py*: Главный модуль программы.
    - 📄 *models.py*: Модели данных Pydantic.
  - 📁 **tests**: Тесты

## Используемые библиотеки и фреймворки

- FastAPI
- SQLAlchemy
- Databases: [docs](https://www.encode.io/databases/) | [GitHub](https://github.com/encode/databases)
- `asyncpg`
- `pytest`

## Запуск приложения

```bash
docker compose up -d --build
```

Документация API будет доступна по адресу: [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs).

![Docs Screenshot](./images/sreenshot1.png)

## Запуск тестов

```bash
docker compose up -d --build
docker compose exec web pytest .
```

## Подключение к БД

```bash
docker compose exec db psql --username=fastapi_recipes --dbname=fastapi_recipes_dev
# Команды psql:
# \j - список БД
# \c fastapi_recipes_dev - подключиться к БД
# \dt - список таблиц
# \q - выход
```

----

## Справочные материалы

- [Developing and Testing an Asynchronous API with FastAPI and Pytest](https://testdriven.io/blog/fastapi-crud/)
- [FastAPI Documentation](https://fastapi.tiangolo.com/)
- [FastAPI. Bill Lubanovic · «O’Reilly» · 2023](http://library.hazadus.ru/books/85/details/)
